#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QIcon>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QGridLayout>
#include <QLineEdit>

#include "msgshowarea.h"
#include "msgeditarea.h"
#include "sessionfriendarea.h"


QT_BEGIN_NAMESPACE
namespace Ui {
class MainWidget;
}
QT_END_NAMESPACE

class MainWidget : public QWidget
{
    Q_OBJECT

private:
    static MainWidget *instance;
    MainWidget(QWidget *parent = nullptr);

    enum ActiveTaB
    {
        SESSION_LIST,
        FRIEND_LIST,
        APPLY_LIST
    };

public:
    void initMainWindow();
    void initLeftWindow();
    void initRightWindow();
    void initMidWindow();

    void initSignalSlot();

    void switchTabToSession();
    void switchTabToFriend();
    void switchTabToApply();

    void loadSessionList();
    void loadFriendList();
    void loadApplyList();

    void loadRecentMessage(const QString &chatSessionId);

    void updateFriendList();
    void updateChatSessionList();
    void updateApplyList();
    void updateRecentMsg(const QString &chatSessionId);

    void switchToSession(const QString &friendId);

    MsgShowArea *getMsgShowArea() { return _msgShowArea; }

public:
    static MainWidget *getInstance();
    ~MainWidget();

private:
    Ui::MainWidget *ui;

    QWidget *_windowLeft;         // 左侧区域
    QWidget *_windowMid;          // 中间区域
    QWidget *_windowRight;        // 右侧区域

    QPushButton *_userAvatar;     // 用户头像
    QPushButton *_sessionTaB;     // 会话标签页按钮
    QPushButton *_friendTaB;      // 好友标签页按钮
    QPushButton *_applyTaB;       // 申请标签页按钮

    QLineEdit *_searchEdit;       // 搜索框
    QPushButton *_addBtn;         // 好友添加好友
    SessionFriendArea *_sessionFriendArea;

    ActiveTaB _activeTaB = SESSION_LIST; // 目前选中的标签页

    MsgShowArea *_msgShowArea;    // 消息展示区
    MsgEditArea *_msgEditArea;    // 消息编辑区

    QWidget *_titleWidget;        // 会话标题栏
    QLabel *_sessionTitleLabel;   // 会话标题
    QPushButton *_extraBtn;       // 会话详情按钮
};
#endif // MAINWIDGET_H
